import logging
import sys
import pandas as pd
import matplotlib.pyplot as plt
logFile='NFD Module Test.log'
logging.basicConfig(filename=logFile
,filemode='w'
,level=logging.DEBUG
,format="%(asctime)s ; %(name)-60s ; %(levelname)-7s ; %(message)s"
)
logger = logging.getLogger()
consoleHandler = logging.StreamHandler(sys.stdout)
consoleHandler.setFormatter(logging.Formatter("%(levelname)-7s ; %(message)s"))
consoleHandler.setLevel(logging.INFO)
logger.addHandler(consoleHandler)
# PT3S Module
import NFD
import Am
import Mx
import Rm
help(NFD)
Help on module NFD:
NAME
NFD
CLASSES
builtins.Exception(builtins.BaseException)
NFDError
builtins.object
NFD
class NFD(builtins.object)
| Raises:
| NFDError
|
| Methods defined here:
|
| __init__(self)
| Initialize self. See help(type(self)) for accurate signature.
|
| plotNFD(gdf_FWVB, gdf_ROHR, colors_FWVB=['green', 'red'], colors_ROHR=['lightgray', 'dimgray'], norm_min_FWVB=24, norm_max_FWVB=38, yTicks=None, yTickLabels=None, norm_min_ROHR=333, norm_max_ROHR=666, FWVB_edgecolor='White', FWVB_groesse=0.1, color_FWVB_under='green', color_FWVB_over='red', color_ROHR_under='magenta', color_ROHR_over='lime', Anzeigen_ROHR=True, ROHR_Ampel=False, ROHR_dicke=0.0025, column_ROHR_Dicke='DI', color_ROHR='grey', LabelsOnTop=True, FWVB_markerscaling_col='W0', FWVB_cmap_col='ZKOR_k', Map_resolution=12, FWVB_cbar_label='default', cbar_size=0.7)
| Die Funktion plottet FWVB und wahlweise Rohre mit Hintergrundkarte.
| Groesse und Farbe der FWVB/Rohre koennen an eigen gewaehlte Spalten angepasst werden.
|
| Args:
|
| * gdf_FWVB: DataFrame der FWVB (muss vor dem Ausfuehren dieser Funktion definiert werden)
| * gdf_ROHR: DataFrame der ROHRE (muss vor dem Ausfuehren dieser Funktion definiert werden)
| * colors_FWVB: Bsp.: ['green', 'red'] Colormap der FWVB (niedrige Werte beginnen bei linker Farbe(hier 'green'))
| * colors_ROHR: Bsp.: ['lightgray', 'dimgray'] Colormap der Rohre (niedrige Werte beginnen bei linker Farbe(hier 'dimgray'))
| * norm_min_FWVB: Unterer Wert der Farbskala fuer FWVB
| * norm_max_FWVB: Oberer Wert der Farbskala fuer FWVB
| * yTicks: Hier koennen die yTicks der Colorbar angegeben werden
| * yTickLabels: Hier koennen die yTickLabels der Colorbar angegeben werden
| * norm_min_ROHR: Unterer Wert der Farbskala fuer Rohre
| * norm_max_ROHR: Oberer Wert der Farbskala fuer Rohre
| * FWVB_edgecolor: Randfarbe der FWVB
| * FWVB_groesse: Faktor, der die Groesse der FWVB zusaetzlich skaliert
| * color_FWVB_under: Farbe der FWVB mit Werten unterhalb der definierten Farbskala
| * color_FWVB_over: Farbe der FWVB mit Werten ueberhalb der definierten Farbskala
| * color_ROHR_under: Farbe der Rohre mit Werten unterhalb der definierten Farbskala
| * color_ROHR_over: Farbe der Rohre mit Werten ueberhalb der definierten Farbskala
| * Anzeigen_ROHR: Bestimmt, ob Rohre angezeigt werden (True/False)
| * ROHR_Ampel: Sollen die Rohre eine Farbampel besitzen (True/False)
| * ROHR_dicke: Faktor, der die Dicke der Rohre zusaetzlich skaliert
| * column_ROHR_Dicke: Spalte, welche die Dicke der Rohre definiert
| * color_ROHR: Farbe der Rohre (falls nicht in Ampeldarstellung)
| * LabelsOnTop: Sollen die Labels ueber dem geplotteten angezeigt werden (True/False)
| * FWVB_markerscaling_col: Gibt die Spalte der FWVB an, mit der die Marker (markersize, linewidth, alpha) skaliert werden sollen
| * FWVB_cmap_col: Gibt die Spalte der FWVB an, mit der diese in die Colormap eingeordnet werden
| * Map_resolution: 0-20 Aufloesung der Hintergrundkarte (Je hoeher das Zommlevel, desto hoeher die Aufloesung)
| * FWVB_cbar_label: Titel der Colorbar fuer die direkten FWVB
| * cbar_size: Faktor mit dem die groesse der Colorbar skaliert wird
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class NFDError(builtins.Exception)
| NFDError(value)
|
| Method resolution order:
| NFDError
| builtins.Exception
| builtins.BaseException
| builtins.object
|
| Methods defined here:
|
| __init__(self, value)
| Initialize self. See help(type(self)) for accurate signature.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.Exception:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.BaseException:
|
| __delattr__(self, name, /)
| Implement delattr(self, name).
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __reduce__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __setattr__(self, name, value, /)
| Implement setattr(self, name, value).
|
| __setstate__(...)
|
| with_traceback(...)
| Exception.with_traceback(tb) --
| set self.__traceback__ to tb and return self.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.BaseException:
|
| __cause__
| exception cause
|
| __context__
| exception context
|
| __dict__
|
| __suppress_context__
|
| __traceback__
|
| args
DATA
logger = <Logger PT3S (DEBUG)>
VERSION
90.12.4.0.dev1
FILE
c:\users\bruenner\source\repos\pt3s\nfd.py
# Pfad der Modelldatei
accFilename = 'testdata\DHNetwork.mdb'
# Pfad der Shapedatei der LINKS (alle Verbindungsstücke in SIR3S wie Rohre, FWVB, Ventile, usw.)
shpFilename = 'testdata\DHNetwork_LINKS.shp'
# Pfad des Berechnungsergebnisses
mx1File = 'testdata\WDDHNetwork\B1\V0\BZ1\M-1-0-1.1.MX1'
# Hiermit werden bei der Ausgabe von Dataframes max. 10 Zeilen und Spalten angezeigt. Grund dafür ist, dass das Anzeigen von sehr großen Dataframes Arbeitsspeicher frisst
pd.options.display.max_rows = 10
pd.options.display.max_columns = 10
# Einlesen der Modelldatei
am = Am.Am(accFilename)
# Ergänzen der Sachdaten um Geometrien der Shapefile
# Wichtig ist hier, dass das richtige Koordinatensystem angegeben wird (Im Fall des Beispiels sind die Modellkoordinaten fiktiv)
# Fall das Koordinatensystem nicht bekannt ist, kann dieses mit Hilfe von QGIS ermittelt werden
V3s = am.ShpAdd(shapeFile=shpFilename,crs=5112,onlyObjectsInContainerLst=['AGFW Symposium DH'],addNodeData=True,NodeDataKey='tk')
# Einlesen der Berechnungsergebnisse
mx = Mx.Mx(mx1File)
# Ergänzen der Sachdaten um die eingelesenen Berechnungsergebnisse
V3sErg = am.MxAdd(mx)
# Erstellen eines neuen Dataframes mit für den Plot wichtigen Daten der FWVB
plot_FWVB=V3s['V3_FWVB'][['geometry', 'ZKOR_k', 'W0']].copy(deep=True)
# Erstellen eines neuen Dataframes mit für den Plot wichtige Daten der Rohre
plot_ROHR = V3s['V3_ROHR'][['geometry', 'DI']]
# Berecih auf den die Farbskala der FWVB genormt werden soll
norm_min_FWVB=24
norm_max_FWVB=38
# Erstellen der yTicks der Farbskala
dyTick=2
dNorm=norm_max_FWVB-norm_min_FWVB
dyAnz=int(dNorm/dyTick)
yTicks=[norm_min_FWVB+float(x)*dyTick for x in range(dyAnz+1)]
yTicks=sorted(yTicks)
yTicks
[24.0, 26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 38.0]
# Erstellen der yTickLabels der Farbskala
yTickLabels=["{:4.2f}".format(y) for y in yTicks]
yTickLabels[0]="<= {:s} grün".format(yTickLabels[0])
yTickLabels[-1]=">= {:s} rot".format(yTickLabels[-1])
yTickLabels
['<= 24.00 grün', '26.00', '28.00', '30.00', '32.00', '34.00', '36.00', '>= 38.00 rot']
# Plotten
fig=plt.figure(figsize=Rm.DINA2,dpi=Rm.dpiSize)
NFD.NFD.plotNFD(
gdf_FWVB = plot_FWVB.sort_values(by=['W0'],ascending=False) #DataFrame der FWVB (muss vor dem Ausführen dieser Funktion definiert werden)
,gdf_ROHR = plot_ROHR #DataFrame der FWVB (muss vor dem Ausführen dieser Funktion definiert werden)
,colors_FWVB = ['green', 'red'] #Colormap der FWVB (niedrige Werte beginnen bei linker Farbe(hier 'green'))
,colors_ROHR = ['lightgray', 'dimgray'] #Colormap der Rohre (niedrige Werte beginnen bei linker Farbe(hier 'black'))
,norm_min_FWVB = norm_min_FWVB #norm_min_FWVB #Unterer Wert der Farbskala für FWVB
,norm_max_FWVB = norm_max_FWVB #norm_min_FWVB #Oberer Wert der Farbskala für FWVB
,yTicks = yTicks #Setzt yTicks der Farbskala
,yTickLabels = yTickLabels #Setzt yTickLabels der Farbskala
,column_ROHR_Dicke = 'DI' #Spalte, welche die Dicke der Rohre definiert
,FWVB_markerscaling_col = 'W0' #Gibt die Spalte der FWVB an, mit der die Marker (markersize, linewidth, alpha) skaliert werden sollen
,FWVB_cmap_col = 'ZKOR_k' #Gibt die Spalte der FWVB an, mit der diese in die Colormap eingeordnet werden
,FWVB_cbar_label = 'FWVB mNN' #Titel der Colorbar für die FWVB
,cbar_size = 0.45 #Faktor um die groesse der Farbskala zu aendern
)
# Der Plot zeigt alle FWVB und Rohre des Modells
# Die groesse der FWVB skaliert mit ihrem W0
# Die Farbe der FWVB hängt von der geodätischen Höhe seines Rücklaufknotens ab
# Die dicke der Rohre skaliert mit dem Innendurchmesser DI
# Die Koordinaten des Modells sind fiktiv!
# Die Hintergrundkarte gehört zwar zu den Koordinaten, alledings existiert an dieser Stelle kein solches Netz!